package com.qidian.permission.controller;

import com.qidian.permission.entity.Role;
import com.qidian.permission.service.RoleService;
import com.qidian.permission.util.entity.PerResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author 18林梦雅
 * @Company 起点编程
 * @Time 2023/10/21 1:27
 * @Description
 */

@RestController
@RequestMapping("/role")
@CrossOrigin
public class RoleController {
    @Autowired
    private RoleService roleService;

    /*controller
    多条件分页查询接口
    请求：GET
    url： /role/list
    参数： roleName，roleStatus, page , limit
    响应结果：
    成功： ｛code:200,msg:"", data:｛curr:1,limit:12,total:123,maxPageNum:12, data:[用户列表]｝｝
    没有数据: {code:400,msg:"" data:｛curr:1,limit:12,total:0,maxPageNum:0, data:[]｝
    */
    @GetMapping("/list")
    public PerResult list(Role role, @RequestParam(defaultValue="1")int page, @RequestParam(defaultValue="5")int limit){
        return roleService.queryByPage(role,page,limit);
    }

    /**controller
     * 添加用户接口
     * 请求方法： POST
     * url： /role/save
     * 参数：
     * 格式：JSON
     * 参数的内容：username,userPass
     * 响应结果：
     * 成功： ｛code:200,msg:"",data:null｝
     * 失败：
     * 失败｛code:500,msg:"错误信息",data:null｝
     * 重名 {code: 300,msg:"名字重复",data:""}
     * @param role
     * @return
     */
    @PostMapping("/save")
    public PerResult save(@RequestBody Role role){
        return roleService.addRole(role);
    }



    //根据roleId查看对应的role信息
    //编辑后保存到数据库,进行返回
    @GetMapping("/get")
    public PerResult get(Long roleId){
        return roleService.selectByRoleId(roleId);
    }

    /*编辑角色
请求方法： PUT/POST
url： /role/update
参数 : userId(必须),username,userPass,userStatus
响应结果：
成功： ｛code:200,msg:"",data:null｝
失败：
失败｛code:500,msg:"错误信息",data:null｝
重名 {code: 300,msg:"名字重复",data:""}
*/
    @PutMapping("/update")
    public PerResult update(@RequestBody Role role){
        System.out.println(role+"+++++++++++++++++++++++++++++++++++++++++");
        return roleService.update(role);
    }


    @DeleteMapping("/{roleId}")
    public PerResult deleteById(@PathVariable Long roleId){//注意这里的注解是因为用字段为url
        return roleService.deleteUpdateStatus(roleId);
    };


    @DeleteMapping("/deletes")
    public PerResult deleteSelect( Long[] roleId){
        System.out.println(roleId+"+++++++++++++++++++++++++++++++++++++++++++++++");
        return roleService.deleteUpdateSelect(roleId);
    };



}
